/**
 * 自定义 404 错误类
 */

class NotFoundError extends Error{
	constructor(message) {
		super(message);
		this.name = 'NotFoundError'
	}
}

/**
 *
 * @param res
 * @param message
 * @param data
 * @param code
 */
function success (res, message, data={}, code=200) {
	res.status(code).json({
		status: true,
		message,
		data
	})
}

function failure (res, error) {
	// 表单验证错误
	if (error.name === 'SequelizeValidationError') {
		const errors = error.errors.map(error => error.message)
		res.status(400).json({
			status: false,
			message: '请求参数错误',
			errors
		})
	}

	// 未找到内容
	if (error.name === 'NotFoundError') {
		res.status(404).json({
			status: false,
			message: '资源不存在',
			errors: [error.message]
		})
	}

	res.status(500).json({
		status: false,
		message: `服务器错误`,
		data: [error.message]
	})
}

module.exports = {
	NotFoundError,
	success,
	failure
}